type operator = Add | Sub | Mul | Div

type expr =
    Binop of expr * operator * expr
  | Lit of int
  | Id of string
  | Str of string
  | Char of char
  | Call of string * expr list
  | Int of string
  | Assign of string * expr
  | ArrAssign of string * int * expr
  | Stringv of string
  | IntArray of string * int

type stmt =
    Expr of expr
  | Block of stmt list

type func = {
     fname : string;
     formals : string list;
     body : stmt ;
}

type program = func list
